package com.observer.impl;

import java.util.ArrayList;
import com.observer.Observer;
import com.observer.Subject;

public class ConcreteSubject implements Subject {

	// 我们加上一个ArrayList来记录观察者，此ArrayList是在构造器中建立的。
	private ArrayList<Observer> observers;
	private String content;

	public ConcreteSubject() {
		observers = new ArrayList<Observer>();
	}

	@Override
	public void registerObserver(Observer o) {
		observers.add(o);
	}

	@Override
	public void removeObserver(Observer o) {
		int i = observers.indexOf(o);
		if (i >= 0) {
			observers.remove(i);
		}
	}

	/*
	 * (non-Javadoc) 我们 把状态告诉每一个观察者。因为 观察者都实现了update()，所以我 们知道如何通知它们。
	 */
	@Override
	public void notifyObservers() {
		// TODO Auto-generated method stub
		for (int i = 0; i < observers.size(); i++) {
			Observer observer = (Observer) observers.get(i);
			observer.update(content);
		}
	}

	public void setContent(String content) {
		this.content = content;
	}

}
